#ifndef COMMONPAGE_H
#define COMMONPAGE_H

#include <QWidget>
#include "qmediaplaylist.h"
#include "musiclist.h"
#include <qpixmap.h>

namespace Ui
{
    class commonPage;
}

enum pageType
{
    OTHER,
    LIKE_PAGE, //我喜欢页面
    LOCAL_PAGE, // 本地下载页面
    HISTORY_PAGE // 最近播放页面
};

class commonPage final : public QWidget
{
    Q_OBJECT

public:
    explicit commonPage(QWidget *parent = nullptr);
    // 设置通用页面的UI元素，包括标题文本和背景图片
    void setCommonPageUi(const QString &text, const QString &imagePath) const;
    // 设置音乐列表类型（如喜欢页面、本地页面或历史页面）
    void setMusicListType(pageType page_type);
    // 向音乐页面添加音乐列表内容
    void addMusicToMusicPage(musicList &music_list);
    // 刷新页面显示内容
    void reFresh(musicList &music_list);
    // 将音乐列表添加到播放器播放列表中
    void addMusicToPlayer(musicList &music_list, QMediaPlaylist *play_list) const;
    // 根据索引获取音乐ID
    const QString &getMusicIdByIndex(int index) const;
    // 设置音乐图片（如专辑封面）
    void setMusicImage(const QPixmap &pixmap) const;
    ~commonPage() override;

signals:
    // 更新音乐的喜欢状态信号
    void updateLikeMusic(bool is_like, const QString &music_id);
    // 播放全部音乐信号
    void playAll(pageType page_type);
    // 在通用页面中播放所有音乐
    void playAllOfCommonPage(commonPage *common_page, int index);
    // 根据索引播放音乐
    void playMusicByIndex(commonPage *, int);


private:
    Ui::commonPage *ui;
    pageType page_typy_ = OTHER; // 保存该页面的类别说明
    QVector<QString> music_of_page_; // 保存musicListType对应页面的歌曲ID
};

#endif // COMMONPAGE_H